package org.anyin.gitee.cloud.lib.core.enums;

import java.util.EnumSet;
import java.util.Objects;

public interface BaseEnum {


    String getCode();

    String getText();

    static <E extends Enum<E> & BaseEnum> E getByCode(String code, Class<E> clazz){
        Objects.requireNonNull(code);
        EnumSet<E> all = EnumSet.allOf(clazz);
        return all.stream().filter(e -> e.getCode().equals(code)).findFirst().orElse(null);
    }

    static <E extends Enum<E> & BaseEnum> E getByText(String text, Class<E> clazz){
        Objects.requireNonNull(text);
        EnumSet<E> all = EnumSet.allOf(clazz);
        return all.stream().filter(e -> e.getText().equals(text)).findFirst().orElse(null);
    }
}
